package project02.controller.message;

import java.util.List;
import java.util.logging.Logger;

import org.slim3.controller.Controller;
import org.slim3.controller.Navigation;
import org.slim3.util.BeanUtil;

import project02.cool.CustomValidator;
import project02.dao.MessageDataDao;
import project02.model.MessageData;
import project02.model.UserInfo;

public class UpdMsgController extends Controller {

    @SuppressWarnings("unused")
    private static final Logger logger = Logger.getLogger(UpdMsgController.class.getName());

    @Override
    public Navigation run() {

        UserInfo user = sessionScope("userInfo");

        if (!Validate()) {
            returnFrontPage();
            return forward("modify.jsp");
        }

        if (!user.getPassword().equals(asString("pass"))) {
            returnFrontPage();
            requestScope("result", "パスワードが一致しません.");
            return forward("modify.jsp");
        }

        MessageData entity = new MessageData();
        entity.setMessageId(asString("messageId"));
        entity.setUserId(user.getUserId());
        entity.setYear(asString("year"));
        entity.setMonth(asString("month"));
        entity.setDate(asString("date"));
        entity.setWorh(asString("worh"));
        entity.setMessage(asString("message"));

        MessageDataDao dao = new MessageDataDao();
        try {
            dao.makePersistentInTx(entity);
        } catch (Exception e) {
            requestScope("result",  "<script type=\"text/javascript\"> window.alert('メッセージ修正に失敗しました。" + e.getMessage() + "; </script>");
            return forward("modify.jsp");
        }

        requestScope("result",  "<script type=\"text/javascript\"> window.alert('メッセージを修正しました。');</script>");

        List<MessageData> list = dao.findAllByUser(user.getUserId());
        requestScope("resultList", list);

        return forward("index.jsp");
    }

    /**
     * バリデータ
     * @return バリデータ
     */
    private boolean Validate() {

        CustomValidator val = new CustomValidator(request);

        val.add("message", val.required("メッセージは入力必須項目です."));

        return val.validate();
    }

    /**
     * 前画面の入力内容をリクエストパラメータに入れる(バリデータで前画面に戻る対応)
     */
    public void returnFrontPage() {

        MessageData bean = new MessageData();
        BeanUtil.copy(request, bean);
        requestScope("resultData", bean);
    }
}
